#ifndef HTTPENUM_H
#define HTTPENUM_H

/**
 * @brief http链接状态枚举
 */
enum ConnectionState
{
    H_CONNECTED = 0,
    H_DISCONNECTING,
    H_DISCONNECTED
};

/**
 * @brief The ProcessState enum 进程状态
 */
enum ProcessState
{
    // 分析URL
    STATE_PARSE_URI = 1,

    // 分析 头信息
    STATE_PARSE_HEADERS,

    // 接收 body 分析
    STATE_RECV_BODY,

    // 状态分析
    STATE_ANALYSIS,

    // 状态完成
    STATE_FINISH
};

/**
 * @brief The URIState enum URI 状态
 */
enum URIState
{
    // 再次解析
    PARSE_URI_AGAIN = 1,

    // 解析错误
    PARSE_URI_ERROR,

    PARSE_URI_SUCCESS,
};

/**
 * @brief The HttpMethod enum http 请求方法
 */
enum HttpMethod
{
    METHOD_POST = 1,
    METHOD_GET,
    METHOD_HEAD
};

/**
 * @brief The HttpVersion enum http 版本
 */
enum HttpVersion
{
    HTTP_10 = 1,
    HTTP_11
};

/**
 * @brief 解析header 状态
 */
enum ParseState
{
    H_START = 0,
    H_KEY,
    H_COLON,
    H_SPACES_AFTER_COLON,
    H_VALUE,
    H_CR,
    H_LF,
    H_END_CR,
    H_END_LF
};

enum HeaderState
{
    PARSE_HEADER_SUCCESS = 1,
    PARSE_HEADER_AGAIN,
    PARSE_HEADER_ERROR
};

enum AnalysisState
{
    ANALYSIS_SUCCESS = 1,
    ANALYSIS_ERROR
};

#endif // HTTPENUM_H
